home *** CD-ROM | disk | FTP | other *** search
/ Tiger Disk 6 / Tiger_Disk_006_19xx_Tiger-Crew-Disk_de_Side_B.d64 / 10 mk (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  6KB  |  167 lines

  1. 8 clr
  2. 10 u$="[197][197][197][197][197][197][197][197][197][197]":o$="[164][164][164][164][164][164][164][164][164]"
  3. 100 rem beispiel 1
  4. 101 data 162,0,189,72,3
  5. 102 data 32,210,255,232,224
  6. 103 data 19,208,245,96,147
  7. 104 data 83,89,78,84,65
  8. 105 data 88,32,73,83,84
  9. 106 data 32,84,79,76,76
  10. 107 data 32,33,13
  11. 108 rem beispiel 2
  12. 109 data 162,17,169,197,32
  13. 110 data 210,255,202,208,250
  14. 111 data 96
  15. 112 rem beispiel 3
  16. 113 data 169,147,32,210,255
  17. 114 data 162,65,138,32,210
  18. 115 data 255,169,41,32,210
  19. 116 data 255,169,13,32,210
  20. 117 data 255,232,224,85,208
  21. 118 data 237,96
  22. 200 print"[147][164][164][164]";o$;o$;o$;o$:print"syntax-lehrgang 'maschinensprache' (10)
  23. 210 [153]"totototo";o$;o$:[153]"2.1. bildschirmausgabe
  24. 220 print"2. ausgabe mit der printroutine des be-
  25. 230 [153]"   triebssystems
  26. 240 print"etwas einfacher als die direkte ausgabe
  27. 250 [153]"auf dem bildschirm  ist die ausgabe mit
  28. 260 print"der printroutine des betriebssystems.
  29. 270 [153]"man erkauft  diesen vorteil  jedoch mit
  30. 280 print"einer  geringeren geschwindigkeit  (nur
  31. 290 [153]"beim 8000'er etwa gleich).
  32. 300 restore:fori=0to70:readx:poke826+i,x:next
  33. 310 i=1:gosub5000:ifflthen200
  34. 400 print"[147]die printroutine wird mit  'jsr  $ffd2'":printtab(28);u$
  35. 410 print"aufgerufen (dezimal: 65490). sie druckt
  36. 420 [153]"das im ac stehende zeichen  dorthin, wo
  37. 430 print"der cursor sich befindet und  setzt die
  38. 440 [153]"cursoradresse um 1 weiter. das naechste
  39. 450 print"zeichen wird daher  automatisch  hinter
  40. 460 [153]"das  erste gedruckt.
  41. 470 print"die cursorsteuerbefehle koennen wie ge-
  42. 480 [153]"woehnlich verwendet werden.
  43. 490 print"die zeichen im ac muessen im ascii-code":printtab(29);u$
  44. 500 print"sein.
  45. 520 i[178]2:[141]5000:[139]fl[167]200
  46. 600 [153]"loadbeispiele:":[153]u$
  47. 605 [153]"tocmd1wait. besonders  einfach ist  das loeschen
  48. 610 print"des bildschirmes:
  49. 615 [153]"   lda #$93      'clr' in ac
  50. 620 print"   jsr $ffd2     print
  51. 630 [153]"einfacher geht's doch kaum, oder ?
  52. 640 print"[164][157]2[146]. cursor  in linke obere ecke  setzen,
  53. 650 [153]"ohne bildschirm zu loeschen:
  54. 660 print"   lda #$13      'home' in ac
  55. 670 [153]"   jsr $ffd2     print
  56. 720 i=3:gosub5000:ifflthen400
  57. 800 print"[147][164][157]3[146]. mit 'return' wird der cursor auf
  58. 805 [153]"den naechsten zeilenanfang gesetzt:
  59. 810 print"   lda #$0d      'return' in ac
  60. 815 [153]"   jsr $ffd2     print
  61. 820 print"statt 'return' findet man auch oft 'cr'
  62. 830 [153]"es bedeutet  'car return',  also soviel
  63. 840 print"wie 'wagenruecklauf'.
  64. 930 i[178]4:[141]5000:[139]fl[167]600
  65. 1000 [153]"loadsoll text  ausgedruckt werden,  so legt
  66. 1010 print"man wieder wie bei der direkten ausgabe
  67. 1020 [153]"eine liste an, nur diesmal in ascii.
  68. 1030 print"die cursorsteuerungen  packt man  dabei
  69. 1040 [153]"natuerlich gleich mit in die liste.
  70. 1050 print"eine solche liste koennte beispielswei-
  71. 1060 [153]"se so aussehen:
  72. 1130 i=5:gosub5000:ifflthen800
  73. 1200 print"[147]     adresse inhalt zeichen
  74. 1210 [129]i[178]0[164]18:[153]"      n+"[202]([196](i)[170]" ",2,2)"    $       ' 'on"
  75. 1230 [153][163]15)[202]("9353594e5441582049535420544f4c4c20210d",2[172]i[170]1,2);
  76. 1240 [153][163]23)[202](" syntax ist toll ! ",i[170]1,1):[130]
  77. 1250 [153][163]20)"on'return'"[163]21)"'clr'"
  78. 1320 i[178]6:[141]5000:[139]fl[167]1000
  79. 1400 [153]"loadvor diese texttabelle schreiben wir ein
  80. 1410 print"programm,  das in einer schleife  nach-
  81. 1420 [153]"einander die zeichen in den ac laed und
  82. 1430 print"diese mit einem  unterprogrammaufruf an
  83. 1440 [153]"die printroutine uebergibt.
  84. 1450 print"wohlgemerkt: wohin der text geschrieben":printtab(13)"[197][197][197][197][197]
  85. 1455 [153]"wird, ist in der tabelle durch die mit-":[153][163]10)u$"valvalvalval"
  86. 1460 [153]"eingebauten cursorsteuerungen schon ge-
  87. 1470 print"nau festgelegt!
  88. 1480 [153]"hier das programm:
  89. 1510 i=7:gosub5000:ifflthen1200
  90. 1600 print"[147][176][192] ldx #$00    zaehler auf 0
  91. 1610 [153]"(NULL)cmd(NULL)  lda n,x     zeichen in  ac
  92. 1620 print"[221][157][221]  jsr $ffd2   print
  93. 1625 [153]"(NULL)cmd(NULL)  inx         x=x+1
  94. 1630 print"[221][157][221]  cpx #$13    x=19?
  95. 1635 [153]"(NULL)cmd/_ bne $f5     nein: naechstes zeichen
  96. 1680 print"   rts
  97. 1685 [153]"ueberzeugen sie sich,  dass der abbruch
  98. 1690 print"bei x=$13 (dezimal=19) erfolgen muss !
  99. 1700 [153]"nun eine demonstration:
  100. 1710 i=8:gosub5000:ifflthen1400
  101. 1800 sys826:forw=0to500:next
  102. 1810 print"schoen - es funktioniert.   der text in
  103. 1820 [153]"diesem beispiel ist natuerlich nur kurz
  104. 1830 print"aber  er laesst sich prinzipiell belie-
  105. 1840 [153]"big verlaengern.   die zeile 'cpx #$13'
  106. 1850 print"ist dann entsprechend abzuaendern.
  107. 1860 [153]"wenn sie  das programm  studieren  oder
  108. 1870 print"veraendern wollen:   es steht ab 826 im
  109. 1880 [153]"ram.
  110. 1910 i=9:gosub5000:ifflthen1600
  111. 2000 print"[147]ein aergernis  bei dieser  methode sind
  112. 2005 [153]"laengere folgen desselben zeichens, wie
  113. 2010 print"z.b.bei unterstreichungen, einrahmenden
  114. 2020 [153]"linien etc.  hier legt man besser keine
  115. 2030 print"tabelle an,  sondern laesst das zeichen
  116. 2040 [153]"von einer gesonderten schleife drucken.
  117. 2050 print"wollen wir  beispielsweise den text des
  118. 2055 [153]"letzten  beispiels  unterstreichen,  so
  119. 2070 print"muessen wir 17 mal das zeichen '[197]' aus-
  120. 2080 [153]"drucken. das macht folgendes programm:
  121. 2110 i=10:gosub5000:ifflthen1800
  122. 2200 print"[147]   ldx #$11     zaehler = 17
  123. 2220 [153]"   lda #$c5     'val' in ac
  124. 2230 print"[176][192] jsr $ffd2    print
  125. 2240 [153]"(NULL)cmd(NULL)  dex          x=x-1
  126. 2250 print"[221][157][173]_ bne $fa      x=0?
  127. 2260 [153]"   rts
  128. 2270 print"dieses programm ist ab 859 gespeichert.
  129. 2280 [153]"wir rufen  nun zuerst  den beispieltext
  130. 2290 print"mit sys (826) und dann die obige unter-
  131. 2295 [153]"streichungsroutine mit sys (859) auf:
  132. 2310 i=11:gosub5000:ifflthen2000
  133. 2400 sys826:sys859:forw=0to999:next
  134. 2410 print"^"
  135. 2420 print"zu beachten ist,  dass der cursor jetzt
  136. 2430 [153]"hinter dem letzten 'val' steht, also dort
  137. 2440 print"wo der pfeil  hinzeigt.    der naechste
  138. 2450 [153]"printbefehl macht daher an dieser stel-
  139. 2460 print"le weiter !
  140. 2470 [153]"nochmals  die vorteile  dieser methode:
  141. 2480 print"ascii-code,bequeme programmierung, ein-":printu$u$u$"[197][197][197][197][197][197][197][197][197]"
  142. 2490 print"fache cursorsteuerung.":printu$u$"[197][197][197][197]"
  143. 2510 i=12:gosub5000:ifflthen2200
  144. 2600 print"[147]aufgaben:":printu$
  145. 2620 print"1. schreiben sie folgenden basic-befehl
  146. 2630 [153]"als maschinenprogramm:
  147. 2640 a$=chr$(34):print"'print"a$"[147]"a$";tab(10);"a$"aufgabe 1"a$"'"
  148. 2660 print"2. ebenso diesen:
  149. 2670 [153]"'print"a$"load"a$";spc(10);"a$"aufgabe 1"a$"'"
  150. 2690 [153]"3. schreiben sie ein pgm,das an den an-
  151. 2700 print"fang der ersten zeile 'a)' schreibt, an
  152. 2705 [153]"den der zweiten 'b)', etc bis zeile 20.
  153. 2710 i=13:gosub5000:ifflthen2400
  154. 2800 sys870:forw=0to500:next
  155. 2810 print"eine etwas ausgefallene loesung fuer
  156. 2820 [153]"aufgabe 3 finden sie ab 870 im ram.
  157. 2910 print"- seite 14 -  <+> [145][164][164][164][164][157][157][157][157]ende[146] <-> von vorne"
  158. 3060 gosub5020:onflgoto0
  159. 3080 sys870:end:run
  160. 5000 rem umblaettern
  161. 5010 print"  - seite";i;"-  <+> weiter  <-> zurueck";
  162. 5020 fori=0to11:getx$:next
  163. 5030 getx$:ifx$=""then5030
  164. 5040 ifx$="+"thenfl=0:return
  165. 5050 ifx$="-"thenfl=1:return
  166. 5060 goto5030
  167.